package fr.afcepf.ai89.esharing.data;

import java.util.List;

import javax.ejb.Remote;

import fr.afcepf.ai89.esharing.entity.FrCodePostalAsso;
import fr.afcepf.ai89.esharing.entity.FrCodePostalAssoPK;
import fr.afcepf.ai89.esharing.entity.FrCommune;
import fr.afcepf.ai89.esharing.entity.FrDepartement;
import fr.afcepf.ai89.esharing.entity.FrRegion;
@Remote
public interface IDAOFrCodePostalAsso {
	
	FrCodePostalAsso getCpAsso(FrCodePostalAssoPK idCodePostal);
	
	/* Ces méthodes sont destinées à appeler à une requête simple
	 * et retournerant une liste des codes postaux associés à leurs 
	 * communes respectives (ce qui peut entraîner le retour d'un 
	 * code postal sur plusieures lignes, avec toutes les communes 
	 * uniques qui y sont associées). */
	
	List<FrCodePostalAsso> getCpAsso();
	List<FrCodePostalAsso> getCpAsso(FrRegion region);
	List<FrCodePostalAsso> getCpAsso(FrDepartement dept);
	List<FrCodePostalAsso> getCpAsso(FrCommune commune);
	
	/* Ces méthodes sont destinées à appeler à une requête du simple 
	 * champ code postal (SELECT UNIQUE) qui ne doivent en aucun cas 
	 * retourner les autres colonnes de la table.
	 */
	
	List<Integer> getCodesPostaux();
	List<Integer> getCodesPostaux(FrRegion region);
	List<Integer> getCodesPostaux(FrDepartement dept);
	List<Integer> getCodesPostaux(FrCommune commune);
	
	List<FrCommune> getCommunes(int codePostal);
	
	int addCpAsso(FrCodePostalAsso cpAsso);
	int majCpAsso(FrCodePostalAsso cpAsso);
	
}
